Digital Painting

ABSTRACT

A user identifies an area of a digital canvas. Color gradients are determined based on a corresponding area on a reference. Brush strokes are applied in the area of the digital canvas, the brush strokes having trajectories based on the color gradients.

BACKGROUND

Some painting programs allow an existing digital image to be rendered in a selected style. For example, Adobe Photoshop 5.0 offers filters that apply artistic styles, such as simulated watercolor, pastel, dry brush, or fresco, to a digital image. Photoshop and other programs, such as Xaos Tools' Paint Alchemy, also enable the application of brush styles in rendering an image. These filters and effects apply algorithms uniformly (possibly with some randomness) to all parts of the image.

Another painting program, Fractal Design's Painter 5.0, allows a user to apply realistic-looking brush strokes to a digital canvas. The strokes are applied in much the same way that a painter would brush paint on a canvas. The user may create almost any painting that he is capable of drawing. To create a good painting, the user must have artistic ability.

A variety of other approaches to rendering painterly images have been used and proposed. For example, fluid brush strokes may be automatically applied to an entire image in a selected painting style. In another technique, a grayscale image may be converted into a pen-and-ink style line drawing by allowing interactive modification of image tone (lightness, darkness) and a line stroke direction field. In a different approach, realistic watercolor brush marks may be applied to a digital image automatically based on an initial painting condition specified by a user. In another system, parametric surfaces may be rendered in pen and ink based on a three-dimensional model of objects to be rendered.

SUMMARY

In general, in one aspect, the invention features a method that includes enabling a user to identify an area of a digital canvas, determining color gradients based on a corresponding area on a reference, and applying brush strokes in the area of the digital canvas, the brush strokes having trajectories based on the color gradients.

In general, in another aspect, the invention features enabling a user to indicate an area of a digital canvas by performing an action using a user interface device, and applying multiple brush strokes in the area of the digital canvas in response to performance of the action, the brush strokes being based on color information contained in a corresponding area of a reference.

Implementations of the invention may include one or more of the following features.

Reference colors may be determined based on a corresponding area on a reference, and the brush strokes may have colors based on the reference colors. The reference colors and color gradients may be based on a blurred version of the corresponding area of the reference. The brush strokes may be applied selectively based on color differences between the area of the canvas and the corresponding area of the reference. The user may specify a style (e.g., an historical painting style) for the brush strokes. The brush strokes may be applied only when the application of strokes would produce a smaller color difference between the area of the canvas and the corresponding area of the reference. The brush stroke may be oriented generally in a direction of an edge identified by the gradient.

The user may identify an area on a digital canvas and a palette of colors based on a corresponding area on a reference. The brush stroke may have colors based on the palette. The size and/or an opacity of paint applied by brush strokes may depend on pressure applied in a pressure sensitive pointing device.

The user may specify different brush stroke styles for different regions of the canvas.

The brush stroke may be stopped when both the stroke exceeds a minimum length and a continuing stroke would increase the difference between the canvas and the reference.

The reference may have a different size and/or shape from the canvas and areas of the reference may be mapped to areas of the canvas based on user choices.

Among the advantages of the invention are one or more of the following.

A user is able to interactively create a digital image having a hand-painted appearance. For example, a digitized photograph may be used to create a digital painting quickly. The user retains a high degree of artistic control over the painting process. The resulting digital painting is fluid, non-uniform, and individualized. The brush strokes are applied intelligently and automatically. A useful balance is struck between manual painting and automatic brush stroke generation.

The user thus has a significant degree of control over each portion of the image while not being required to create each brush stroke individually. The combination of multiple brush strokes with intelligent placement of each stroke (based on characteristics of the underlying image) enables use of the image to create a digital painting quickly.

The user may control styles within different portions of the digital painting and at the same time take advantage of algorithms that automate the generation and placement of brush strokes. The preexisting image guides the application of brush strokes. Multiple brush strokes may be applied at one time. For each path of the motion of the cursor, the program can lay down large numbers of brush strokes.

Both grayscale and color digital images may be processed. A variety of painting styles may be used.

Other features and advantages of the invention will become apparent from the following description and from the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

The file of this patent contains at least one drawing executed in color. Copies of this patent with color drawing(s) will be provided by the Patent and Trademark Office upon request and payment of the necessary fee.

FIG. 1 is block diagram of aspects of a digital painting system.

FIG. 2 is a displayed options palette.

FIG. 3 is a portion of a digital canvas.

FIGS. 4 and 5 are a photograph and a corresponding digital painting.

FIGS. 6, 7, and 8 are a photograph and corresponding expressionist and pointillist styles of digital paintings.

DESCRIPTION

The Canvas and the Reference Image

Using an appropriately configured digital painting system, a user can interactively create a custom digital painting that resembles a painterly version of an original digital image. By digital image, we mean a collection of digital information that may be cast into a visual image. By painterly, we mean that the digital painting gives the impression of having been created by brush strokes applied to a surface.

As seen in FIG. 1, the user creates the painting using a reference 10, a canvas 12, and an art brush tool 14, all of which could be implemented as additional features of a painting program such as Adobe Photoshop.

The reference is stored data that represents an original digital image selected by the user. The reference could be any digital image that can be imported into the paint program being used, for example, a photograph, artwork, a document, or a web page. The reference could be obtained from a digital camera, digital video, a scanner, a fax, or other source. In the case of Adobe Photoshop, the selection of a reference is enabled using the history feature.

Once selected, the reference is not changed. However, the user could change reference images in later stages of painting. For example, after getting to a certain point in painting, he could replace the reference image with the canvas in its present state and then do further work on the canvas relative to that newly stored reference.

The reference could be a different size and/or shape from the canvas. Then areas of the reference could be mapped to areas of the canvas by a simple linear scaling operation. Alternatively, the user could choose to suppress the scaling and instead indicate a point on the canvas that is to correspond to a given point (e.g., the upper right corner) on the reference.

The user paints on a displayed canvas 16 that represents the stored digital canvas 12. (In the display of FIG. 1, menus, palettes, and other controls are not shown for simplicity.) The canvas 12 is updated as the user works so that it always represents the current state of the digital painting that is being created. The user paints by clicking or dragging a cursor 24 representing the art brush tool 14. The art brush tool may be thought of as software that implements the features of an art brush. The art brush could be included, for example, in the tool palette of Adobe Photoshop.

Before starting to paint, the user also chooses an initial canvas separately from his choice of a reference.

The initial canvas typically is filled with a white background but the canvas could have any fill or begin with any image, including the reference. When the initial canvas is a copy of the reference, the user has the impression of painting on the reference. Nevertheless, the reference, which is maintained separately from the canvas, does not change. In another mode of operation, the reference may be displayed in a subdued color palette beneath the canvas brush strokes. The reference becomes less and less visible as it is covered by new brush strokes.

If the user interrupts painting and saves a partially painted canvas, he can begin a new session by opening a reference (either a reference that had been previously used or a different one) and the partially painted canvas for additional painting.

The canvas must be open and displayed during painting. The reference may, but need not, be displayed at the same time in a separate window 26. Even when the reference is not being displayed, it continues to be maintained in its original form.

The art brush applies paint to the canvas as brush strokes that make the canvas look like a painterly version of the reference.

The user may apply brush strokes to previously unpainted parts of the canvas or to previously painted parts of the canvas. The user need not paint each brush stroke separately. Rather, the user's role is to make choices about the style and characteristics of brush strokes and to indicate, by clicking and dragging the art brush, the places and the sequence in which multiple of brush strokes that reflect both his choices and the characteristics of the reference are automatically laid down. When the user clicks or drags, brush strokes may or may not be painted in the vicinity of each art brush position based on conditions discussed later.

Factors that Affect the Brush Strokes

In addition to the position of the art brush, several factors control the generation of brush strokes in response to dragging and clicking, including:

-   -   choices about brush strokes made by a user prior to clicking or         dragging.     -   characteristics of pixels of the reference in the vicinity of         the art brush cursor location.     -   determinations made by software, including whether and how many         brush strokes should be generated.         User Choices about Brush Strokes

User choices are made in an options palette 50 (FIG. 2) that is provided by the art brush tool software. The options palette, like options palettes for other features of Adobe Photoshop, lets the artist control behavioral aspects of the art brush.

The top line of the palette contains a blending mode control 52 and an opacity control 54. Blending mode 52 controls aspects of the paint applied to the canvas. The blending mode choices include normal, lighter, darker, hue, saturation, color, luminance, and other options that work in the same way as similar options available for Photoshop's regular paint brush tool. Any mode other than normal modifies how paint is applied to the canvas.

Opacity 54 controls the opacity or transparency of the applied paint. A number less than 100% causes paint to be applied translucently, somewhat like a wash of watercolor.

On the second line of the palette are a style control 56 and a fidelity control 58.

Style 56 controls the shape of the strokes applied by the art brush. In one implementation, a variety of possible styles are organized in four categories: tight, loose, dab, and curl. The strokes include tight short, tight medium, tight long, loose medium, loose long, dab, tight curl, loose curl, and so on. Tight strokes (of various lengths) are aligned rather tightly with edges of objects that are identified in the reference. Loose strokes follow the edges less faithfully and give the painting a more abstract look. Dab strokes are dabs of paint; a stroke consists of one dab. Curl strokes—somewhat Van Gogh-like—start along an edge of the reference and then curl away from the edge. The tightness or looseness of the curls can be selected, as well as their average length, by choosing an appropriate one of the available styles.

By selecting brush styles, the user may, for example, cause brush strokes on a flower basket to be rendered with a broad brush (impressionist) style and the brush strokes for the flowers to be rendered with a shorter brush (expressionist or pointillist) style. Thus, available styles may mimic the impressions of historical styles. In addition to the style selection arrangement discussed above, in another implementation, the system provides an interface by which the user can create custom styles, either based on existing styles or from scratch.

Fidelity 58 controls the art brush's selection of color that is based on the reference in the vicinity of the cursor location and is used in the brush strokes applied to the canvas. With fidelity set to a value less than 100%, art brush adds random variation to the color it uses to paint. The smaller the fidelity value, the more randomness. The randomness helps to give the painting a more hand-painted look.

The third row of the palette includes a size control 60 and a tolerance control 62.

Size 60 controls how much paint is applied in a brush stroke. As seen in FIG. 3, when the cursor is clicked or dragged, the art brush applies paint in brush strokes within, for example, a circle 100 centered on the cursor position 102 and with a radius equal to the value of the size parameter. Larger values of size allow a user to apply lots of paint easily over a larger area. Smaller size values let the user apply paint more specifically. If size is zero, only one stroke will be painted, beginning at the cursor position.

Tolerance 62 controls whether and how often the art brush applies paint brush strokes. With a large tolerance, the canvas and the reference must mismatch in the vicinity of the cursor by a large amount (as explained below) before paint will be applied. Smaller tolerance will cause paint to be applied more often. A zero tolerance will force the art brush to paint even when the canvas and reference match closely.

The bottom line in the options palette has two stylus option check boxes, size 64 and opacity 66. When painting with a pressure sensitive stylus on the surface of an electronic tablet, these options (if set) let the user control brush size or painting opacity, or both, using stylus pressure. If the size box is checked, then pressing harder with the stylus causes the paint strokes to become wider. If the opacity box is checked, then pressing harder with the stylus causes the paint to become more opaque. Both controls may be checked simultaneously. If neither control is “checked”, then stylus pressure on the-digital tablet has no effect on the application of paint.

Pressure (or stylus angle) could control also other aspects, including the fidelity, size, or tolerance values in the options palette.

The ability to change brush sizes allows a user to create a rough version on the canvas using a large brush, then to use smaller brushes on already painted areas to add detail to the painting.

Determining Whether a Brush Stroke Should be Generated

During dragging or clicking, positions within the cursor vicinity (the circle around the cursor location having a radius determined by the size parameter) are candidates for addition of new brush strokes. As seen in FIG. 3, to define possible locations for brush strokes, the art brush fills the circle with a set of grid points 104 that are randomly placed with the average distance between pairs of points roughly equal to the radius of the brush. Each grid point represents a site for painting a possible new brush stroke. Whether the stroke should be painted depends on how closely the canvas matches the reference at that point.

To determine how closely they match, the art brush blurs pixels of the reference that are located within roughly the art brush's radius of each of the grid points. A standard Gaussian blurring is used. The blurred reference pixels are compared with the corresponding set of pixels in the canvas. If the average color difference between the sets of pixels exceeds the tolerance value set in the options palette, then a stroke is started at the grid point, otherwise not. Other image characteristics, such as shape-sensitive measures of image distance, may also be used for matching purposes.

For matching purposes, the color difference is measured as a Euclidean distance in the color space of the canvas and reference. For example, if a canvas pixel has color components c1, m1, y1, k1 and its corresponding blurred reference pixel has components c2, m2, y2, k2, the Euclidean distance is the square root of the sum (c1−c2)*(c1−c2)+(m1−m2)*(m1−m2)+(y1−y2)*(y1−y2)+(k1−k2)*(k1−k2). The Euclidian distances are added for all pixels within roughly (depending on the painting style) one brush radius of the starting grid point of the candidate brush stroke and the sum is divided by the total number of pixels times the square root of the number of channels in the images (two in this case). The resulting number ranges between zero and one. The number is zero if all pairs of pixels match identically and is one if all pairs are maximally different. If the number between zero and one is greater than or equal to the tolerance value, the stroke is painted, otherwise not.

Other measures of color closeness could be used, including non-Euclidean measures. For example, closeness can be measured in a different color space from that used to represent the canvas or reference. One might wish to compare hue and/or luminance (brightness) without comparing saturation, for example.

Path of The Brush Stroke

For many styles, each brush stroke has a trajectory that follows along a color gradient contour in the blurred reference. As suggested in FIG. 3, the gradient contours 110, 112, 114, 116 are obtained by generating a black and white version of the blurred reference using standard techniques. The gradient contours essentially provide information about edges between differently colored areas in the reference. Contours of equal brightness within the black and white version are found. From the equal brightness contour at which a brush stroke begins, the stroke 120 is extended in either one of the two possible directions 122 (chosen randomly) along the contour and for some styles continues along the contour much as a cow might walk at a constant elevation along the side of a hill. In other styles, the directions of strokes, though depending on the contour, may not follow it directly, as explained below.

A brush stroke is made up of one or more partially overlapping dabs of paint. The geometry of each dab is specified by a currently selected brush tip. As each dab is painted, the brush tip may be rotated or oriented to be parallel to a tangent to the stroke trajectory. That is, the brush tip may be rotated appropriately to the left or right as the trajectory bends left or right. Brush tip rotation is optional, under control of the current style.

Stopping the Stroke

Brush strokes have minimum and maximum stroke lengths that are determined by the selected painting style. Once the stroke exceeds the minimum length, it may be stopped before reaching the maximum length if continuing the stroke would make the canvas differ more from the blurred reference.

A stroke is started when a significant color difference between the canvas and the blurred reference is found at a particular grid point. Painting a dab of paint, using the color of the blurred reference at that point, will make the canvas match the reference more closely, in general. Additional dabs of this same color along the gradient will usually also make the canvas match the reference more closely along that portion of the gradient. But at some point, painting may make the canvas match less well if more paint were applied. The art brush will stop painting at that point, as long as the minimum stroke length criteria is satisfied.

The stroke will be stopped also based on the maximum length criteria, independent of color matching.

Color and Opacity of the Brush Stroke

The color of each brush stroke is based on the color of the blurred reference in the vicinity of the candidate grid point in the area of mismatch. The brush color may be based on an interpolation between the color of the blurred reference and the color of the canvas in the area of mismatch. Brush color may be constant for a given brush stroke or may vary along the stroke. The color along the stroke could be based on an interpolation between the color of the blurred reference in the original area of mismatch and the varying, existing colors of the canvas along the stroke's trajectory.

Automatic Resetting of Parameters

In addition to being set manually, the brush size could be reset automatically to guide a novice user. For example, the brush size could be reduced each time the user again paints in a previously painted region of the canvas. A sequence of values of other brush parameters could also be stored. Each time the user clicks the art brush or stops dragging the cursor, the next values in the parameter sequences replace the prior ones with respect to the next painting step.

Example Brush Styles

Examples of brush styles are illustrated by the pseudo-code set forth below. All of the illustrated styles are built on a base_style. The three tight styles differ in their mininum and maximum stroke lengths. The loose styles also differ in their stroke length. The loose styles exhibit a non-zero brush_inertia that operates as would a cow that cannot turn too tightly to follow the contour of a hillside and so drifts off the correct contour as suggested by stroke 124 in FIG. 3. The result is a more abstract painting. The dabs are short strokes (zero length) that are spaced more closely to one another within the circle defined by the size control value. The curly styles don't follow the contour; they curl away from it with a curliness that decreases along the strokes as suggested by stroke 126 in FIG. 3, under control of the two curliness values. Parameters that define a style could include brush size, shape, length, and coverage area, spacing, smoothness, curvature, translucency, texture, paint thickness, and rendering mode (e.g., transparent, opaque).

void art_brush::style::base_style( ) { brush_coverage = 25.0; brush_spacing = 1.0; brush_size = 1.0; grid_spacing = 1.0; brush_inertia = 0.0; gradient_jitter = 0.1; min_stroke_length = 0.0; max_stroke_length = 0.0; stroke_begin_curl = 0.0; stroke_end_curl = 0.0; rotate_brush = false; lightness_jitter = 0.0; chroma_jitter = 0.0; color_tolerance = 0.2; reference_radius = 1.0; reference_sigma = 1.0/3.0; max_reference_size = 25; max_grid = 75; } void art_brush::style::tight_short_style( ) { base_style( ) ; min_stroke_length = 1.0; max_stroke_length = 3.0; } void art_brush::style::tight_medium_style( ) { base_style ( ) ; min_stroke_length = 4.0; max_stroke_length = 7.0; } void art_brush::style::tight_long_style( ) { base_style( ) min_stroke_length = 8.0; max_stroke_length = 15.0; } void art_brush::style::loose_medium_style( ) { base_style ( ); brush_inertia = 0.8; min_stroke_length = 4.0; max_stroke_length = 7.0; } void art_brush::style::loose_long_style( ) { base_style ( ); brush_inertia = 0.8; min_stroke_length = 8.0; max_stroke_length = 15.0; } void art_brush::style::dab_style( ) { base_style( ); grid_spacing = 0.75; } void art_brush::style::loose_curl_style( ) { base_style ( ); grid_spacing = 1.5; brush_inertia = 1.0; gradient_jitter = 0.0; min_stroke_length = 12.0; max_stroke_length = 24.0; stroke_begin_curl = 0.10; stroke_end_curl = 0.0; } void art_brush::style::tight_curl_style( ) { base_style( ); grid_spacing = 1.5; brush_inertia = 1.0; gradient_jitter = 0.0; min_stroke_length = 12.0; max_stroke_length = 24.0; stroke_begin_curl = 0.20; stroke_end_curl = 0.0; } Associating Styles with Regions

Different regions of a painting may be associated with different respective painting styles. The associations of painting styles with regions may be defined manually by the user during the course of painting by choices made before dragging or clicking operations. Alternatively, the associations may be set in advance by having the user identify regions of interest and associated styles and then either allowing the user to paint the regions with the selected styles or automatically applying the selected styles to all parts of the selected regions. Multiple regions of the reference may be selected by a selection brush tool.

The user may construct a mask with the normal painting tools. A mask assigns a number between 0 and 1 to a subset of pixels of the canvas. A selected paint style is applied to all pixels in the mask. The mask's pixel values control the value of the mask's associated style control. The 0 value simply specifies the minimum valid numerical value of the mask's style control. Similarly, a value of 1 specifies the maximum control value. Intermediate mask values correspond to intermediate control values. The user associates a specific numerical control (e.g., opacity or fidelity) in the style palette with the mask.

When painting a stroke on the canvas with an associated mask, the average value of the mask in the area of the stroke or part of the stroke determines the value of the associated control in the style palette to be used by that stroke, or by that part of the stroke.

The user could choose a style (e.g., by ‘dipping’ the brush into the style icon or by selecting a style icon or menu item and then painting). Multiple styles could be applied by painting onto the image. If more than one style is applied to a given pixel, an interpolated style may be used in which each parameter value that makes up the style is an average of the parameters from each style. A default style is provided for any region in which the user has not chosen another style. When averaging (interpolating) styles, any associated masks could be used to control the weighted averaging of the style values.

Alternatively, determination of styles for different regions may be done automatically by a segmentation algorithm that divides the image into distinct regions, measures image characteristics in each region, and selects styles based on the measurements.

The image characteristics that may be measured for this purpose include first-order measures such as the average color of pixels in the region, the standard deviation of colors of pixels in the region, or higher moments of the colors.

For example, chrominance or luminance jitter can be added to brush strokes in proportion to the standard deviation of colors in the region, thus allowing the brush strokes to intelligently reflect the color distribution in the image.

The measures could include second-order statistics which quantify, for a color at pixel location r, the probability of having some other color at a location displaced by some amount dr. Texture measures can be derived from combinations of the statistics. These texture measures can be used to set the brush texture or brush jitter, for example.

Region associations and masks would be saved each time the canvas is saved.

Palette Constraints

The application of paint to the canvas may also take account of predefined color palettes. For example, the actual color palette of the reference or of a portion of the reference in the vicinity of the grid point may be constructed by evaluating pixels. Then the colors of the painted pixels of the brush stroke may be constrained to those in the color palette or to combinations of those colors, so that added paint strokes do not use palettes that conflict with the palettes of the reference. The brush strokes could also be constrained on the basis of a palette defined by or selected by the user. For example, an image could be rendered in warm (tending toward reds and yellows) tones by choosing a ‘warm’ palette. Or it could be rendered using a pre-stored palette of a famous artist. For example, a Rembrandt palette would have browns, ochres, and few bright colors.

Sample Digital Paintings

Examples of results that can be achieved using the invention are shown in FIGS. 4 through 8. FIG. 4 is a photograph of bottles. FIG. 5 is a digital painting created from the photograph. FIG. 6 is a photograph of a water scene. FIGS. 7 and 8 are expressionist and pointillist digital paintings that were created from FIG. 6. 

1. A method comprising enabling a user to indicate a position on a digital canvas, in response to the user indicating the position, automatically applying multiple brush strokes in an area of the digital canvas defined with respect to the indicated position, the brush strokes being based on color information contained in a corresponding reference, the brush strokes being applied at randomly placed grid points that are selected based on color differences between the canvas and the reference.
 2. The method of claim 1 in which the color information in the reference is based on a blurred version of at least a portion of the reference.
 3. The method of claim 1 further comprising enabling the user to specify a style for the brush strokes.
 4. The method of claim 1 in which the brush strokes are applied only when applying them would produce a smaller color difference between the area of the canvas and the reference.
 5. The method of claim 3 in which the style is associated with an historical painting style.
 6. The method of claim 1 in which each of the strokes is oriented generally in a direction of an edge identified by a gradient of the reference.
 7. The method of claim 1 further comprising identifying a palette of colors based on the reference, and in which the brush strokes have colors based on the palette.
 8. The method of claim 1 in which the size and/or an opacity of paint applied by brush strokes depends on pressure applied in a pressure sensitive pointing device.
 9. The method of claim 1 further comprising enabling the user to specify different brush stroke styles for different regions of the canvas.
 10. The method of claim 1 further comprising stopping the painting of a brush stroke on the canvas when both the stroke exceeds a minimum length and continuing the stroke would produce a greater color difference between the canvas and the reference.
 11. The method of claim 1 in which the reference is a different size and/or shape from the canvas and areas of the reference are mapped to areas of the canvas based on user choices.
 12. A medium storing software capable of configuring a machine to enable a user to indicate a position on a digital canvas by performing an action using a user interface device, in response to the user indicating the position, automatically apply multiple brush strokes in an area of the digital canvas defined with respect to the indicated position, the brush strokes being based on color information contained in a corresponding reference, and determine reference colors and color gradients based on a reference, the brush strokes having colors based on the reference colors and trajectories based on the color gradients, the brush strokes being applied at randomly placed grid points that are selected based on color differences between the canvas and the reference.
 13. Apparatus comprising means for enabling a user to indicate a position on a digital canvas by performing an action using a user interface device, means for applying automatically, in response to the user indicating the position, multiple brush strokes in an area of the digital canvas defined with respect to the indicated position, the brush strokes being based on color information contained in a corresponding reference, means for determining reference colors and color gradients based on a reference, and means for causing the brush strokes to have colors based on the reference colors and trajectories based on the color gradients, the brush strokes being applied at randomly placed grid points that are selected based on color differences between the canvas and the reference.
 14. A method comprising enabling a user to indicate a position on a digital canvas, determining reference colors and color gradients based on a reference, in response to the user indicating the position, automatically applying multiple brush strokes in an area of the digital canvas defined with respect to the indicated position such that the brush strokes have colors based on the reference colors and trajectories based on the color gradients, are based on a style specified by a user, are applied only when a color difference between the area of the canvas and the corresponding reference would be reduced, are stopped when both the stroke exceeds a minimum length and continuing the stroke would increase the color difference between the canvas and the reference, and are oriented generally in a direction of an edge identified by the gradient, the reference colors and gradients being based on a blurred version of the corresponding area of the reference, the brush strokes being applied at randomly placed grid points that are selected based on color differences between the canvas and the reference.
 15. The method of claim 1 further comprising enabling a user to apply multiple brush strokes automatically by clicking or dragging at a location on the canvas.
 16. The method of claim 1 in which the position is indicated by the location of a user-controlled pointer.
 17. The method of claim 1 in which the position is located on a dragging path of a user-controlled pointer.
 18. The method of claim 1 in which the multiple brush strokes are applied at locations within the area.
 19. The method of claim 18 in which the locations are within a predefined distance of the indicated position.
 20. The method of claim 19 in which the distance is defined by the user.
 21. A method comprising enabling a user to indicate a position on a digital canvas by performing an action using a user interface device, in response to the user indicating the position, automatically applying multiple brush strokes in an area of the digital canvas defined with respect to the indicated position, the brush strokes being based on color information contained in a corresponding reference, and replacing the reference with a different reference for purposes of subsequent application of multiple brush strokes, the brush strokes being applied at randomly placed grid points that are selected based on color differences between the canvas and the reference.
 22. A method comprising enabling a user to indicate a position on a digital canvas by performing an action using a user interface device, in response to the user indicating the position, automatically applying first brush strokes in an area of the digital canvas that is associated with the position, based on color information contained in a corresponding reference, and in response to subsequent user action indicating a position, applying additional brush strokes in the area of the canvas, the additional brush strokes being automatically made smaller than the first brush strokes, the brush strokes being applied at randomly placed grid points that are selected based on color differences between the canvas and the reference.
 23. A method comprising enabling a user to paint brush strokes in an area on a digital canvas, the brush strokes having characteristics that depend on a first painting style selected by the user and on color information contained in a reference, enabling a user to subsequently paint brush strokes in the area based on a second painting style selected by the user, and in response to the user subsequently painting brush strokes in the area based on the second painting style, forming pixels in the area based on an interpolation of the first and second painting styles, the brush strokes being applied at randomly placed grid points that are selected based on color differences between the canvas and the reference.
 24. A medium bearing instructions to cause a machine to enable a user to indicate a position on a digital canvas by performing an action using a user interface device, in response to the user indicating the position, automatically apply multiple brush strokes in an area of the digital canvas defined with respect to the indicated position, the brush strokes being based on color information contained in a corresponding reference, and replace the reference with a different reference for purposes of subsequent application of multiple brush strokes, the brush strokes being applied selectively at randomly arranged grid points based on color differences between the area of the canvas and the reference.
 25. The medium of claim 24 in which the instructions also cause the machine to enable the user to specify a style for the brush strokes.
 26. The medium of claim 24 in which the size and/or an opacity of paint applied by brush strokes depends on pressure applied in a pressure sensitive pointing device.
 27. The medium of claim 24 in which the instruction also cause the machine to enable the user to specify different brush stroke styles for different regions of the canvas.
 28. A medium bearing instructions to cause a machine to enable a user to indicate a position on a digital canvas by performing an action using a user interface device, in response to the user indicating the position, automatically apply first brush strokes in an area of the digital canvas that is associated with the position, based on color information contained in a corresponding reference, and in response to subsequent user action indicating a position, apply additional brush strokes in the area of the canvas, the additional brush strokes being automatically made smaller than the first brush strokes, the brush strokes being applied at randomly placed grid points that are selected based on color differences between the canvas and the reference.
 29. The medium of claim 28 in which the instructions also cause the machine to enable the user to specify a style for the brush strokes.
 30. The medium of claim 28 in which the size and/or an opacity of paint applied by brush strokes depends on pressure applied in a pressure sensitive pointing device.
 31. The medium of claim 28 in which the instructions also cause the machine to enable the user to specify different brush stroke styles for different regions of the canvas.
 32. A medium bearing instructions to cause a machine to enable a user to paint brush strokes in an area on a digital canvas, the brush strokes having characteristics that depend on a first painting style selected by the user and on color information contained in a reference, enable a user to subsequently paint brush strokes in the area on a second painting style selected by the user, and in response to the user subsequently painting brush strokes in the area based on the second painting style, form pixels in the area based on an interpolation of the first and second painting styles, the brush strokes being applied at randomly arranged grid points that are selected based on color differences between the area of the canvas and the reference.
 33. The medium of claim 32 in which the instructions also cause the machine to enable the user to specify a style for the brush strokes.
 34. The medium of claim 32 in which the size and/or an opacity of paint applied by brush strokes depends on pressure applied in a pressure sensitive pointing device.
 35. The medium of claim 32 in which the instructions also cause the machine to enable the user to specify different brush stroke styles for different regions of the canvas. 